home *** CD-ROM | disk | FTP | other *** search
- { SMIX is Copyright 1995 by Ethan Brodsky. All rights reserved. }
- unit Detect;
- interface
- function GetSettings
- (
- var BaseIO : word;
- var IRQ : byte;
- var DMA : byte;
- var DMA16 : byte
- ): boolean;
- {Gets sound card settings from BLASTER environment variable }
- {Parameters: }
- { BaseIO: Sound card base IO address }
- { IRQ: Sound card IRQ }
- { DMA: Sound card 8-bit DMA channel }
- { DMA16: Sound card 16-bit DMA channel (0 if none) }
- {Returns: }
- { TRUE: Sound card settings found successfully }
- { FALSE: Sound card settings could not be found }
-
- implementation
- uses
- DOS;
- function UpcaseStr(Str: string): string;
- var
- i: byte;
- Temp: string;
- begin
- Temp[0] := Str[0];
- for i := 1 to Length(Str) do
- Temp[i] := Upcase(Str[i]);
- UpcaseStr := Temp;
- end;
- function GetSetting(Str: string; ID: char; Hex: boolean): word;
- var
- Temp : string;
- Num : word;
- Code : integer;
- begin
- Temp := Str;
- if Pos(ID, Temp) <> 0
- then
- begin
- Delete(Temp, 1, Pos(ID, Temp));
- Delete(Temp, Pos(' ', Temp), 255);
- if Hex then Insert('$', Temp, 1);
- Val(Temp, Num, Code);
- if Code = 0
- then GetSetting := Num
- else GetSetting := $FF;
- end
- else
- GetSetting := $FF;
-
- end;
- function GetSettings
- (
- var BaseIO: word;
- var IRQ: byte;
- var DMA: byte;
- var DMA16: byte
- ): boolean;
- var
- BLASTER: string;
- begin
- BLASTER := UpcaseStr(GetEnv('BLASTER'));
- BaseIO := GetSetting(BLASTER, 'A', true); {Hex}
- IRQ := GetSetting(BLASTER, 'I', false); {Decimal}
- DMA := GetSetting(BLASTER, 'D', false); {Decimal}
- DMA16 := GetSetting(BLASTER, 'H', false); {Decimal}
-
- GetSettings := true;
- if BLASTER = '' then GetSettings := false;
- if BaseIO = $FF then GetSettings := false;
- if IRQ = $FF then GetSettings := false;
- if DMA = $FF then GetSettings := false;
- {We can survive if there isn't a DMA16 channel}
- end;
- end.